package com.farmer.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 培训课程实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("training_course")
public class TrainingCourse {

    /**
     * 课程ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 课程标题
     */
    @TableField("title")
    private String title;

    /**
     * 课程描述
     */
    @TableField("description")
    private String description;

    /**
     * 课程分类：种植培训、养殖培训、农机培训、电商培训等
     */
    @TableField("category")
    private String category;

    /**
     * 讲师ID（专家表）
     */
    @TableField("instructor_id")
    private Long instructorId;

    /**
     * 讲师姓名
     */
    @TableField("instructor_name")
    private String instructorName;

    /**
     * 讲师头像
     */
    @TableField("instructor_avatar")
    private String instructorAvatar;

    /**
     * 讲师介绍
     */
    @TableField("instructor_intro")
    private String instructorIntro;

    /**
     * 课程封面
     */
    @TableField("cover_image")
    private String coverImage;

    /**
     * 课程类型：ONLINE-线上，OFFLINE-线下，HYBRID-混合
     */
    @TableField("course_type")
    private String courseType;

    /**
     * 课程时长（分钟）
     */
    @TableField("duration")
    private Integer duration;

    /**
     * 最大学员数
     */
    @TableField("max_students")
    private Integer maxStudents;

    /**
     * 当前报名人数
     */
    @TableField("current_students")
    private Integer currentStudents;

    /**
     * 课程价格（0表示免费）
     */
    @TableField("price")
    private BigDecimal price;

    /**
     * 开课时间
     */
    @TableField("start_time")
    private LocalDateTime startTime;

    /**
     * 结课时间
     */
    @TableField("end_time")
    private LocalDateTime endTime;

    /**
     * 上课地点（线下课程）
     */
    @TableField("location")
    private String location;

    /**
     * 课程大纲
     */
    @TableField("course_outline")
    private String courseOutline;

    /**
     * 报名要求
     */
    @TableField("requirements")
    private String requirements;

    /**
     * 课程评分
     */
    @TableField("rating")
    private BigDecimal rating;

    /**
     * 评分人数
     */
    @TableField("rating_count")
    private Integer ratingCount;

    /**
     * 状态：DRAFT-草稿，PUBLISHED-已发布，ONGOING-进行中，COMPLETED-已结束，CANCELLED-已取消
     */
    @TableField("status")
    private String status;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
} 